{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "rMCeH4O_jlZg"
   },
   "source": [
    "# MPSLIB in Google Colab\n",
    "This is a simple exmaple of running MPSLIB online in Google Colab"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "9lWUZXe2oGjj"
   },
   "source": [
    "## INSTALL MPSLIB (simple) (only needed once on google colab)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Mx4XBboKnb0i"
   },
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34
    },
    "colab_type": "code",
    "id": "w9IL9AA_n3Q3",
    "outputId": "e624d6f3-69ce-4b57-a83f-e9a952673bf2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mpslib allready installed. skipping installation.\n"
     ]
    }
   ],
   "source": [
    "module_name='mpslib'\n",
    "try:\n",
    "    __import__(module_name)\n",
    "    print('%s allready installed. skipping installation.' % module_name)\n",
    "        \n",
    "except ImportError:\n",
    "    print('%s cannot be loaded. trying to install it.' % module_name)\n",
    "    #curl -O https://raw.githubusercontent.com/ergosimulation/mpslib/master/install_latest_mpslib.sh\n",
    "    #sh ./install_latest_mpslib.sh\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "y8bVpm11gCLw"
   },
   "source": [
    "##INSTALL MPSLIB (only needed once on google colab)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "VbAykVdWi_BI"
   },
   "outputs": [],
   "source": [
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 0
    },
    "colab_type": "code",
    "id": "_59fgiyOftWb",
    "outputId": "b5c74500-74e2-4e39-efaa-ec6561a45d8d"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cloning into 'mpslib'...\n",
      "remote: Enumerating objects: 371, done.\u001b[K\n",
      "remote: Counting objects: 100% (371/371), done.\u001b[K\n",
      "remote: Compressing objects: 100% (269/269), done.\u001b[K\n",
      "remote: Total 3023 (delta 234), reused 223 (delta 101), pack-reused 2652\u001b[K\n",
      "Receiving objects: 100% (3023/3023), 23.91 MiB | 21.93 MiB/s, done.\n",
      "Resolving deltas: 100% (2079/2079), done.\n",
      "rm -f *.o mps mpslib/*.o mpslib/mpslib.a\n",
      "make -C mpslib\n",
      "make[1]: Entering directory '/content/mpslib/mpslib'\n",
      "g++ -o ENESIM.o -I. -O3 -std=c++11 -static -Wl,--no-as-needed -c ENESIM.cpp\n",
      "g++ -o Coords3D.o -I. -O3 -std=c++11 -static -Wl,--no-as-needed -c Coords3D.cpp\n",
      "g++ -o MPSAlgorithm.o -I. -O3 -std=c++11 -static -Wl,--no-as-needed -c MPSAlgorithm.cpp\n",
      "g++ -o Coords4D.o -I. -O3 -std=c++11 -static -Wl,--no-as-needed -c Coords4D.cpp\n",
      "g++ -o IO.o -I. -O3 -std=c++11 -static -Wl,--no-as-needed -c IO.cpp\n",
      "g++ -o SNESIM.o -I. -O3 -std=c++11 -static -Wl,--no-as-needed -c SNESIM.cpp\n",
      "g++ -o Utility.o -I. -O3 -std=c++11 -static -Wl,--no-as-needed -c Utility.cpp\n",
      "ar rsv mpslib.a ENESIM.o Coords3D.o MPSAlgorithm.o Coords4D.o IO.o SNESIM.o Utility.o\n",
      "ar: creating mpslib.a\n",
      "a - ENESIM.o\n",
      "a - Coords3D.o\n",
      "a - MPSAlgorithm.o\n",
      "a - Coords4D.o\n",
      "a - IO.o\n",
      "a - SNESIM.o\n",
      "a - Utility.o\n",
      "make[1]: Leaving directory '/content/mpslib/mpslib'\n",
      "g++ -O3 -std=c++11 -static -Wl,--no-as-needed mps_genesim.cpp ENESIM_GENERAL.cpp mpslib/mpslib.a -o mps_genesim -I mpslib/ -lstdc++ -lpthread\n",
      "g++ -O3 -std=c++11 -static -Wl,--no-as-needed mps_snesim_list.cpp SNESIMList.cpp mpslib/mpslib.a -o mps_snesim_list -I mpslib/ -lstdc++ -lpthread\n",
      "g++ -O3 -std=c++11 -static -Wl,--no-as-needed mps_snesim_tree.cpp SNESIMTree.cpp mpslib/mpslib.a -o mps_snesim_tree -I mpslib/ -lstdc++ -lpthread\n",
      "/content/mpslib\n",
      "codeblocks\t\t  matlab\t       msvc2012\n",
      "configure.sh\t\t  mps_genesim\t       msvc2017\n",
      "CONTRIBUTING\t\t  mps_genesim.cpp      README.md\n",
      "COPYING.LESSER\t\t  mps_genesim.txt      scikit-mps\n",
      "doc\t\t\t  mpslib\t       SNESIMList.cpp\n",
      "ENESIM_GENERAL.cpp\t  mps_snesim_list      SNESIMList.h\n",
      "ENESIM_GENERAL.h\t  mps_snesim_list.cpp  SNESIMTree.cpp\n",
      "examples\t\t  mps_snesim_tree      SNESIMTree.h\n",
      "install_latest_mpslib.sh  mps_snesim_tree.cpp  ti\n",
      "Makefile\t\t  mps_snesim.txt\n"
     ]
    }
   ],
   "source": [
    "# Get code from GITHUB\n",
    "os.chdir('/content')\n",
    "!rm -fr mpslib && git clone https://github.com/ergosimulation/mpslib.git\n",
    "# Compile\n",
    "os.chdir('/content/mpslib')\n",
    "!make clean\n",
    "!make\n",
    "!pwd\n",
    "!ls"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ij5u0gX8f7Uu"
   },
   "source": [
    "### Install scikit mps (Pyhton interface to MPSlib)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 0
    },
    "colab_type": "code",
    "id": "E2ibTQT4inY4",
    "outputId": "fd92031c-0f11-4aee-e7bc-9488c97a878e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Obtaining file:///content/mpslib/scikit-mps\n",
      "Requirement already satisfied: numpy>=1.0.2 in /usr/local/lib/python3.6/dist-packages (from scikit-mps==0.1.0) (1.16.3)\n",
      "Requirement already satisfied: matplotlib>=1.0.0 in /usr/local/lib/python3.6/dist-packages (from scikit-mps==0.1.0) (3.0.3)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=1.0.0->scikit-mps==0.1.0) (1.1.0)\n",
      "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=1.0.0->scikit-mps==0.1.0) (0.10.0)\n",
      "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=1.0.0->scikit-mps==0.1.0) (2.4.0)\n",
      "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib>=1.0.0->scikit-mps==0.1.0) (2.5.3)\n",
      "Requirement already satisfied: setuptools in /usr/local/lib/python3.6/dist-packages (from kiwisolver>=1.0.1->matplotlib>=1.0.0->scikit-mps==0.1.0) (41.0.1)\n",
      "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from cycler>=0.10->matplotlib>=1.0.0->scikit-mps==0.1.0) (1.12.0)\n",
      "Installing collected packages: scikit-mps\n",
      "  Found existing installation: scikit-mps 0.1.0\n",
      "    Can't uninstall 'scikit-mps'. No files were found to uninstall.\n",
      "  Running setup.py develop for scikit-mps\n",
      "Successfully installed scikit-mps\n"
     ]
    }
   ],
   "source": [
    "os.chdir('/content/mpslib/scikit-mps')\n",
    "!pip install -e ."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ddDyOx6dkyUs"
   },
   "source": [
    "### Install vista (for 3D plotting)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ix7NE8Auk6m1"
   },
   "outputs": [],
   "source": [
    "#!pip install vista"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "60o5bfdpgsvM"
   },
   "source": [
    "# MPSLIB IN PYTHON"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "9iUgRDY-gbg6"
   },
   "outputs": [],
   "source": [
    "import mpslib as mps\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "d6SBCNkCf2RY"
   },
   "source": [
    "### Load a training image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 303
    },
    "colab_type": "code",
    "id": "ypwUx5DBgV2u",
    "outputId": "771eec73-cc9f-415f-ad48-b5b6aad590bf"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7f3af865ea90>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "TI, TI_filename = mps.trainingimages.strebelle(di=2, coarse3d=1)\n",
    "TI, TI_filename = mps.trainingimages.checkerboard2()\n",
    "TI, TI_filename = mps.trainingimages.rot90()\n",
    "\n",
    "plt.imshow(TI[:,:,0].T)\n",
    "#mps.trainingimages.ti_plot_all()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Setup msplib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 391
    },
    "colab_type": "code",
    "id": "VoZL9R2bgr2s",
    "outputId": "6f03c77d-76c1-4b60-c2f1-1c9f4099d558"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'n_real': 100,\n",
       " 'rseed': 1,\n",
       " 'n_max_cpdf_count': 1,\n",
       " 'out_folder': '.',\n",
       " 'ti_fnam': 'ti.dat',\n",
       " 'simulation_grid_size': array([40, 20,  1]),\n",
       " 'origin': array([0, 0, 0]),\n",
       " 'grid_cell_size': array([1, 1, 1]),\n",
       " 'mask_fnam': 'mask.dat',\n",
       " 'hard_data_fnam': 'hard.dat',\n",
       " 'shuffle_simulation_grid': 2,\n",
       " 'entropyfactor_simulation_grid': 4,\n",
       " 'shuffle_ti_grid': 1,\n",
       " 'hard_data_search_radius': 1,\n",
       " 'soft_data_categories': array([0, 1]),\n",
       " 'soft_data_fnam': 'soft.dat',\n",
       " 'n_threads': -1,\n",
       " 'debug_level': -1,\n",
       " 'n_cond': 36,\n",
       " 'n_cond_soft': 1,\n",
       " 'n_max_ite': 1000000,\n",
       " 'distance_measure': 1,\n",
       " 'distance_min': 0,\n",
       " 'distance_pow': 1,\n",
       " 'colocate_dimension': 0,\n",
       " 'max_search_radius': 10000000,\n",
       " 'max_search_radius_soft': 10000000,\n",
       " 'template_size': array([[10,  5],\n",
       "        [10,  5],\n",
       "        [ 1,  1]])}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "O = mps.mpslib(method='mps_snesim_tree',\n",
    "                    verbose_level=-1, debug_level=-1)\n",
    "#O = mps.mpslib(method='mps_genesim')\n",
    "O.parameter_filename = 'mps.txt'\n",
    "O.par['n_real']=9\n",
    "O.par['n_cond']=36\n",
    "O.par['template_size']=np.array([[10,5],[10,5],[1,1]])\n",
    "O.par['origin']=np.array([0,0,0])\n",
    "O.par['simulation_grid_size']=np.array([40,20,1])\n",
    "\n",
    "# hard data\n",
    "O.d_hard = np.array([[ 10, 5, 0, 1],\n",
    "                       [ 30, 15, 0, 0]])\n",
    "\n",
    "# soft data\n",
    "O.d_soft = np.array([[ 10, 15, 0, 0.9, 0.1],\n",
    "                       [ 30, 5, 0, 0.9, 0.1]])\n",
    "\n",
    "\n",
    "# show parameter setting\n",
    "O.par\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "BOm6ElYHfzKf"
   },
   "source": [
    "###Run MPSLIB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 707
    },
    "colab_type": "code",
    "id": "9pZ9M_jrgxZc",
    "outputId": "bb12dbb1-9fbb-4b68-db76-b2f045e16755"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "parallel: using 52 threads to simulate 99 realizations\n",
      "parallel: with up to 2 relizations per thread\n",
      "parallel: Using 50 of max 52 threads\n",
      "__name__ = mpslib.mpslib\n",
      "Thread:000, nr=2\n",
      "Thread:001, nr=2\n",
      "Thread:002, nr=2\n",
      "Thread:003, nr=2\n",
      "Thread:004, nr=2\n",
      "Thread:005, nr=2\n",
      "Thread:006, nr=2\n",
      "Thread:007, nr=2\n",
      "Thread:008, nr=2\n",
      "Thread:009, nr=2\n",
      "Thread:010, nr=2\n",
      "Thread:011, nr=2\n",
      "Thread:012, nr=2\n",
      "Thread:013, nr=2\n",
      "Thread:014, nr=2\n",
      "Thread:015, nr=2\n",
      "Thread:016, nr=2\n",
      "Thread:017, nr=2\n",
      "Thread:018, nr=2\n",
      "Thread:019, nr=2\n",
      "Thread:020, nr=2\n",
      "Thread:021, nr=2\n",
      "Thread:022, nr=2\n",
      "Thread:023, nr=2\n",
      "Thread:024, nr=2\n",
      "Thread:025, nr=2\n",
      "Thread:026, nr=2\n",
      "Thread:027, nr=2\n",
      "Thread:028, nr=2\n",
      "Thread:029, nr=2\n",
      "Thread:030, nr=2\n",
      "Thread:031, nr=2\n",
      "Thread:036, nr=2\n",
      "Thread:037, nr=2\n",
      "Thread:038, nr=2\n",
      "Thread:039, nr=2\n",
      "Thread:040, nr=2\n",
      "Thread:041, nr=2\n",
      "Thread:042, nr=2\n",
      "Thread:034, nr=2\n",
      "Thread:033, nr=2\n",
      "Thread:043, nr=2\n",
      "Thread:032, nr=2\n",
      "Thread:044, nr=2\n",
      "Thread:045, nr=2\n",
      "Thread:035, nr=2\n",
      "Thread:046, nr=2\n",
      "Thread:047, nr=2\n",
      "Thread:048, nr=2\n",
      "Thread:049, nr=1\n",
      "parallel job done. Collecting data from threads\n",
      "parallel: collected 99 realizations\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<mpslib.mpslib.mpslib at 0x7f3af87dbc50>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6940>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d438>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544d780>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf7c39b0>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6588>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b56d8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b5a58>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544d400>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f69b0>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b5ba8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b5f98>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6630>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b5ac8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d4e0>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544d630>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b5898>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544d5c0>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6390>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544d978>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b53c8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d320>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6d68>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b5d30>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d2e8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544de10>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf7c3e48>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544d198>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6b00>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af8683128>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d6a0>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6ba8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf7c3a90>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d0b8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d1d0>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6080>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544de48>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6668>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af89b5668>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d400>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d080>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d128>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f69e8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544dc50>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf67d278>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf7c35c0>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af86f6198>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af8683eb8>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3af544d710>,\n",
       " <mpslib.mpslib.mpslib at 0x7f3adf7c3908>]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Process ForkPoolWorker-195:\n",
      "Process ForkPoolWorker-179:\n",
      "Process ForkPoolWorker-204:\n",
      "Process ForkPoolWorker-187:\n",
      "Process ForkPoolWorker-202:\n",
      "Process ForkPoolWorker-191:\n",
      "Process ForkPoolWorker-198:\n",
      "KeyboardInterrupt\n",
      "Process ForkPoolWorker-205:\n",
      "Process ForkPoolWorker-201:\n",
      "Process ForkPoolWorker-164:\n",
      "Process ForkPoolWorker-160:\n",
      "Process ForkPoolWorker-193:\n",
      "Process ForkPoolWorker-197:\n",
      "Process ForkPoolWorker-207:\n",
      "Process ForkPoolWorker-173:\n",
      "Process ForkPoolWorker-158:\n",
      "Process ForkPoolWorker-166:\n",
      "Process ForkPoolWorker-168:\n",
      "Process ForkPoolWorker-163:\n",
      "Process ForkPoolWorker-169:\n",
      "Process ForkPoolWorker-199:\n",
      "Process ForkPoolWorker-181:\n",
      "Process ForkPoolWorker-167:\n",
      "Process ForkPoolWorker-203:\n",
      "Process ForkPoolWorker-206:\n",
      "Process ForkPoolWorker-196:\n",
      "Process ForkPoolWorker-194:\n",
      "Process ForkPoolWorker-208:\n",
      "Process ForkPoolWorker-192:\n",
      "Process ForkPoolWorker-174:\n",
      "Process ForkPoolWorker-162:\n",
      "Process ForkPoolWorker-188:\n",
      "Process ForkPoolWorker-180:\n",
      "Process ForkPoolWorker-172:\n",
      "Process ForkPoolWorker-165:\n",
      "Process ForkPoolWorker-186:\n",
      "Process ForkPoolWorker-178:\n",
      "Process ForkPoolWorker-190:\n",
      "Process ForkPoolWorker-161:\n",
      "Process ForkPoolWorker-189:\n",
      "Process ForkPoolWorker-159:\n",
      "Process ForkPoolWorker-157:\n",
      "Process ForkPoolWorker-177:\n",
      "Process ForkPoolWorker-170:\n",
      "Process ForkPoolWorker-175:\n",
      "Process ForkPoolWorker-182:\n",
      "Process ForkPoolWorker-185:\n",
      "Process ForkPoolWorker-176:\n",
      "Process ForkPoolWorker-183:\n",
      "Process ForkPoolWorker-184:\n",
      "Process ForkPoolWorker-171:\n",
      "Process ForkPoolWorker-200:\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "Traceback (most recent call last):\n",
      "Traceback (most recent call last):\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 297, in _bootstrap\n",
      "    self.run()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/process.py\", line 99, in run\n",
      "    self._target(*self._args, **self._kwargs)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/pool.py\", line 110, in worker\n",
      "    task = get()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 352, in get\n",
      "    res = self._reader.recv_bytes()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/queues.py\", line 351, in get\n",
      "    with self._rlock:\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/connection.py\", line 216, in recv_bytes\n",
      "    buf = self._recv_bytes(maxlength)\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "KeyboardInterrupt\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "KeyboardInterrupt\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/synchronize.py\", line 95, in __enter__\n",
      "    return self._semlock.__enter__()\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/connection.py\", line 407, in _recv_bytes\n",
      "    buf = self._recv(4)\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "  File \"/home/tmeha/anaconda3/envs/mps/lib/python3.7/multiprocessing/connection.py\", line 379, in _recv\n",
      "    chunk = read(handle, remaining)\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n",
      "KeyboardInterrupt\n"
     ]
    }
   ],
   "source": [
    "O.ti = TI\n",
    "O.run_parallel()\n",
    "#O.run()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "YHneXKN0sVCN"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 25 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAADjCAYAAABuDNiGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXmcXVWV77+/qspMQkbBQGIAeQr4BCEiPm0Gx6AM7QyKmpbn8Foah7Zfo7ZK4+tWnHj6pFW64QFOiD5EQBQFQcQGJEAYwiAhREgCCSFkhCQktd4f59zUuvvWPXWr6tatc6vW9/O5n7vP2fvss88+65x19tpr7y0zIwiCIAg8HcNdgCAIgqB8hHIIgiAIagjlEARBENQQyiEIgiCoIZRDEARBUEMohyAIgqCGUA7BsCLpQknLW3i+oyWdKSlkfwgYbP1KWijpA80uV9B/FOMcguFE0n7AFDO7s0XnOxP4AjDGzHa04pyjicHWr6QbgC4ze3WTixb0k67hLkAwujGzh4e7DPWQNAbYYfEFFYxComndBPJmtEl6saRrJG2R9Kikv8nj3yvpAUmbJV2ffy3745dL+oGkD0paKmmrpDskHZOke7mk30p6StKzkpZJ+rd+lHM3Sf8nL9s2SWskXSvpxS6NSfpfkk6X9IikTZJ+L+mgXvJ7q6RbJD0jab2kn0qam6R5t6Q782vfKOkeSR928VVmJUnz8jJ8RNKXJD2Rl+EHkiZKemFex5vzunp/P67/TLKvWoDn8vNYct6/lfQVSauAbcDUPH4fST+U9GRed4slvaWXcxws6QpJT+f36I+S/qrRMjZ4HRdKWiFpvqT/zM/zoKQ35/GfzGVqo6RfSJqVHG+S/kXSZ/N8npV0o6RDknRvzPPfkNf3g5I+X1CuM6lfv1+UtF3Sy136SXmeN0vqylsNRwGvqhyb7wuGAzOL3yB/wJmAAfcApwOvB36e7/tX4D+BvwbeAawCbk2OXw6sAO4H3pWnvRnYCrwoT7MbsA74NXA8cDSwEDivH+X8d2A1cCpwJPAW4GvAES6N5eW5BjgBeDvwCLCUrLlfSfeRPO0FwJvyct+fp52cp3k10A38b+B1wBvy+vlHl8+FwHK3PS/P9y/ARcAbgU8AzwEXJ3V8WZ7/QQ1e/97Af+T5vwo4onLt7rwrgcuB44ATgQnAHGANcC9wSl6mC/Jzn+DyPxTYAtyU19ubgCvIlMxhTZS3C4GNwH3AB4AFwB9yefk6cCXw5jxuI3BpcrwBjwF/zGXtXcCDwFPA9DzNvnm5f5jn/xrgw8DZA6zfLrLn4CFgN3cdG4B98u0DgTuAuyrHAgcO9/M9Wn/DXoCR8KNHObzP7ZsG7MgfuClu/+l52he4fcuB7cAct28ymTL4fr49Pz/upYMo573AN/pIY/kDPMbte3u+/7/l27vlD/UFybH75Nfx8Xz7U8C6Ps53Ib0rh98l6S7L95/SSx1/YQD3qivZXznvHeR9cS7ufOBJYEay/7fAYrd9HZmCHOv2deb7Lm+ivF2Yl/VIt++l+b4HgU63/xtkitXvM2AtMCm5/ueALyb3fEo/y9Zr/bpzrCdT+ifn6U5O0twA3NSsuorfwH9hVmouv6oEzOxpsq/NW8xso0vzQP4/Jzn2FjN7zB2/Cfgl8Mp810NkD9b3JJ0iKT2+EW4DFkr6TG6S6KyT7rdm9pzbvif/r5iMXglMAX6YmwO6JHWRfY0+QNYqqZxvWm4SOk7S1H6U9VfJdqXerqnscHU8kLqox+WWv6UcC4CrgQ3J9V4DHCxpiqQJZCaRnwLdLo2Aa+mpkxqU0ZXk3RdbzOxGt12pn2vNbGeyvwt4fnL81Wa2pbJhZsuBW+iRt8VkyuISSW+X9LwGylRIfo6PAO8D/i9wsZn9eLD5BkNDKIfm8nSyvb3OPoDxyf7VveS3GtgLwMw2AMeQmaX+DXhU0r2S3taP8v0d8D0yc8NtwBpJ50iamKRbl2xvS8pceVFcS/YC8b//CszIy/x7MlPaHDIz25PK+jhe2kBZ69Vbb/vTuhwMj/ey73lkL7T0Wr+ax88AppO1Ej7XS7rTyJRkveftqF6O6Yv1fsPMiuoH+i9vS8nMZx3A94En8v6loxooWxG/JGtNjwPOGWRewRAS3krlYY86+1ZWNsxsMfC2/MtyPvBp4FJJB5vZvX2dwMw258d8WtILyEwHXyZ7gfxjP8r6VP6/EFjSS/wmd86fAT+TtBtZP8nZwK8l7W1m3f04Z6vozTPpKTKb/tl1jllF9ix1A+eS9Y3UZlz/em8HXl4nbqhoRN6uB66XNI6sD+Es4JeS5pnZ2gGe91wyJfowWSv4VRYuxaUklEN5OELSnIppSdJksk7FX6YJ84fpFkmfI+s0PoCsP6FhzOwvwNclvQd4ST/L+p9kCuCFZnZRg+fbDFwlaV/gm2Rf20/287zNoNIKmoBTYn3wazJzyxIze7ZevpL+ABwM3NEfxZebEBc1mr5JvEnSpIppSdI8sg7gL6cJzWwb8Ltcwf+CrG+pnnKoW7+S3g28F3gnsIzM6eKLZB8s/vjJA7qioKmEcigPq4Hf5O6A28i+5CeRPTxIOg74EJknzSN53OlkD+DNjZxA0s1k3jP3AJvJzBkHk3UQNoyZbZT0D8C5uZvkr8g6qPfK87zBzH4k6Syyr9Hryb6u987LvNjMhkMxQObhA/D3kn4F7DSzvl7Mnwf+BNwo6dtkDgTTyJTqvmZWGdH7SeBG4BpJ55OZqGaSeTF1mtkZTb2SwfEsmbx9lczE889knk3nAEj6CFk/ydVkfUkzyV7iq8g/RHIT03XAB8ys0lrqtX4l7QN8BzjfzH6aH/9Z4MuSfpO3UirH/62kd5G1LjaZ2YNDVQlBfUI5lIffk3lq/CvZS/Q+4Fgz+3Me/xDZA/05ss7FTWT9Bq83sxUNnuNGsq+2M8ju/TLgE2b2rf4W1sy+J+kx4B+Ad+f5rSQzvyzOk91KpgzOIbPJrwF+k1/DcHEVWZ/N35K99JX/6mJmj0qaT+aJ86/ALDJT0704xWpmd+R+/F8AvgXsTtY6ugP4brMvZJBcTOZ2+22yF/9twElmVulvugs4FvgSWZ/LOjIX3fe41pPITES+L6WmfpUNJvwR8ATwMZf2a2Quyd/PTaNPkZnuXkTmErsb2XNxdNOuOmiYmD6jBCgbBHaTmZ0y3GUJRj75wLR/MbN/Gu6yBOUlvJWCIAiCGsKsNEJowDd+Zy/++yOKqIMgaB5hVhohVOawKeBvzOzCVpRlOMi9bR7pI9kxZnbDkBcmCEYA0XIYOfTlJ9/Xi7PdWUXfdRBeL0HQINFyCIIgCGqIDukgCIKghlAOQRAEQQ2hHIIgCIIaQjkEQRAENYRyCIIgCGoI5RAEQRDUEMohCIIgqCGUQxAEQVBDKIcgCIKghlAOQRAEQQ2hHIIgCIIaQjkEQRAENYRyCIIgCGoI5RAEQRDUEMohCIIgqCGUQxAEQVBDKIcgCIKghlAOQRAEQQ2hHIIgCIIaQjkEQRAENYRyCIIgCGoI5RAEQRDUEMohCIIgqCGUQxAEQVBDKIcgCIKghlAOQRAEQQ2hHIIgCIIaQjkEQRAENYRyCIIgCGoI5RAEQRDUEMohCIIgqCGUQxAEQVBDKIcgCIKghlAOQRAEQQ2hHIIgCIIaQjkEQRAENYRyCIIgCGoI5RAEQRDUEMohCIIgqCGUQxAEQVBDKIcgCIKghlAOQRAEQQ2hHIIgCIIaQjkEQRAENYRyCIIgCGoI5RAEQRDUEMohGDVIukDSGkn31omXpG9JWirpbkmHtrqMQTAQJC2Q9GAuu2f0Er9Q0pOSFue//95XnqEcgtHEhcCCgvhjgf3z34eA77SgTEEwKCR1AueSye+BwMmSDuwl6U/M7JD89x995RvKIRg1mNmNwLqCJCcCF1vGLcBUSc9vTemCYMAcDiw1s2Vmth24hEyWB0XXoIsVBC1kwYIFtnbt2l7jbr/99iXAVrfrPDM7rx/Z7wU85rZX5Pse7285g6C/DEK2e5PbV/SSzdskHQn8GfiEmT3WS5pdhHII2oq1a59k0aI/9honTdhqZvNbXKQgaApDLNtXAj82s22SPgxcBLym6IBQDkGb0U31B1RTWQnMcdt75/uCoAUMWLb7lFsze8pt/gfwlb4yjT6HoM0wYEed36C5Anhf7rV0BLDBzMKkFLSIAcv2bcD+kvaRNBY4iUyWd5H0nZ0A3N9XptFyCNqMgbccJP0YOBqYKWkF8AVgDICZfRe4GngTsBR4BvibwZc3CBplYLJtZjsknQZcA3QCF5jZEklnAYvM7ArgdEknkGmadcDCvvIN5RC0GQZsG9iRZif3EW/ARweUeRAMmkHJ9tVkHzd+3+dd+NPAp/uTZyiHoM0Y0j6HIBhGyiXboRyCNsMo0wMUBM2jXLIdyiFoM8r1dRUEzaNcsh3KIWgzKh4dQTDSKJdsh3II2oxyNb2DoHmUS7ZDOQRtRrma3kHQPMol26EcgjajXF9XQdA8yiXboRyCNqNcX1dB0DzKJduhHII2w4Cdw12IIBgCyiXboRyCNqNcTe8gaB7lku1QDkGbUa6mdxA0j3LJdiiHoM0o1wMUBM2jXLIdyiFoM8rV9A6C5lEu2Q7lELQZ5fq6CoLmUS7ZDuUQtBnlmmIgCJpHuWQ7lEPQZpSr6R0EzaNcsh3KIWgzytX0DoLmUS7ZDuUQtBkDXy0rGJlImgc8Aowxs/LYZfpNuWS7Y7gLMFxIWi7pWUmb3e/bedxCSTcNU7kulGSSTkz2n5PvXzgc5SoPla+r3n5BESWW+b0l/T9JayVtkHRvRc4lzcvlfhR8yJZLtketcsg53sx2c7/ThrtAOX8G3lfZyB+MdwIPD1uJSsPgHiBJCyQ9KGmppDN6iZ8r6XpJd0q6W9Kbmlj4MlBGmf8+8BjwAmAG8F5g9bCWaFgYuGz3Jdcu3dtyZTu/rzxHu3KoQdIBwHeBV+ZfVuslvVzSakmdLt1bJd2Vh8+U9DNJP5G0SdIdkg52aWfnX0ZPSnpE0ul9FONK4NWSpuXbC4C7gSeSsn5A0v2SnpZ0jaQXuLhvSnpM0kZJt0v6Kxd3pqRLJV2cl3dJI8JSHnbU+RWT379zgWOBA4GTJR2YJPsn4FIzexlwEvBvzSt3OSmBzL8cuNDMtpjZDjO708x+lcfdmP+vz8v2Skmdkr6WtzSWAW9uaoUMK/2X7QblGkmTgY8BtzZSklAOCWZ2P/AR4Ob8y2qqmd0GPAW8wSV9L3Cx2z4R+CkwHfgRcLmkMZI6yF72dwF7Aa8FPi7pjQXF2Ar8guzlBFkrwp+L3Oz0GeCtwCzgD8CPXZLbgENceX4qabyLPwG4BJgKXAF8u6A8JWJQLYfDgaVmtszMtpNd/4lJGgOm5OHdgVVNKHSpKYHM3wKcK+kkSXOTuCPz/6l52W4GPggcB7wMmA+8fUAXXjoGLNuNyDXAF4GzG8kQQjlcnn8lVX4fLEh7EXAKgKTpwBvJHogKt5vZz8zsOeAbwHjgCLKvollmdpaZbTezZcC/0/Pir8fFwPskTQWOAi5P4j8CfMnM7s874f4VOKTSejCzH5jZU/mX2NeBccCL3PE3mdnVZraTrFl/MG1B4QM0U9Ii9/tQcvBeZOaLCivyfZ4zgVMkrQCuBv6u6ZcwvJRR5t9B9nHzOeARSYslvbygXO8E/reZPWZm64Av9XnVbcGAZbtPuZZ0KDDHzH7ZaGlGQSdPIX9tZtc2mPYHwP2SJpEJ5x/M7HEXv+vmmFl3/nKZTfYlOlvSepe2k+xhqIuZ3SRpFvBZ4Coze1aST/IC4JuSvu72iUwo/iLpU8CprgxTgJkurTdRPQOMl9RVfm+PQl/wtWY2WPPYyWQmjq9LeiXwfUkvMbPuQeZbFkon82b2NHAGcIakmcDXyJTY3nXKNZvql+FfGryekjM0sp235L4BLOzPcaNdOdTDanaYrZR0M5kZ573Ad5IkcyqB/GbsTWaS2AE8Ymb7D6AcPwA+DxzTS9xjwL+Y2Q/TiLx/4X+SNeeX5A/u02TKo80ZlC/4Stx9IrtHK5M0p5L18WBmN+emuJnAmoGetE0ohcyb2VpJXwPeT2auqikX8DjV9zE1RbUpA5btvuR6MvAS4Ib8A3NP4ApJJ5jZonqZjnazUj1WA3tLGpvsv5jspftfgcuSuMPyDrsu4ONkDsu3AH8CNkn6R0kT8s60l/TRbK7wLeD19HTKeb4LfFrSQQCSdpf0jjxuMtkD+iTQJenz9NjR25yKL3hvvz65Ddhf0j75vT2JrL/F8yiZUq101I4nq8eRzrDJvKSz8/iuvNP0f5DZ0J8iq/tuYF93yKXA6cpcYKeRtTpGAAOW7UK5NrMNZjbTzOaZ2Tyye1SoGCCUw5Wq9vn+eb7/d8AS4AlJa136n5OZc35uZs8kef0CeBfwNNlX1lvN7Lncpn8cWefwI8Ba4D/IOjsLMbN1ZnadmfX2Vfdzss6lSyRtBO4l81YAuAb4NZlL7F/IPkceS/NoTyrzz/TfWyk3mZ1GVj/3k3klLZF0lqQT8mR/D3ww98r5MbCwt/pvY8oo8xPz86wHluXnOwEgP+e/AH/M+0iOIOu/uIasw/sOapVWmzIw2W5QrvuNRpbcDz2SHgY+7O22ks4EXmhmpwxbwUYJ8+d32aJFU3uNk566vQl9DkFCyHxrKJtsR59DP5D0NjL1/rvhLsvopVyTk410QuZbSblkO5RDg0i6gWyAyXtHkOdKG1KuyclGMiHzraZcsh3KoUHM7OiCuDNbV5KAnTuHuwSjgpD5YaBEsh3KIWgvuoHtw12IIBgCSibboRyC9iMMHMFIpUSy3VLlsJtk0/NwZxLntyckcc+5cNro8selDl/eTzf1yfIKekzBcamvrx9FlpbFl7PIRzgdiebzSW+Il5XUAd2THufrIr32cXXOncalcuq3n0vi/H3oz7V7/DUsB9aa1Sa3Xk5eAmbOHGPz5lWmrkrvlJew1JvzWRdOJdjXSPpJ6fNM76L3OB2fxPnj0uotepp8nkV3OH2y/c0aVxC3W0GeaX36ukivfaILp9fg66I/0u3vQ5EENybdy5evZO3adaWX7ZYqh+lko2kgG6Xl8dvpJD9+5rNNBcelI5V8XFrn3ul/VsFx6aPlt9cncavqpEtJlZG/prQsPm5f6jM92V7nwmkXl88nrU8flx7n0xbVddG1F8XNcO+c+fW+oIxSNb0rzJs3nkWLDs230uma/CwQ6dxzD7jw2iTOz3aSzhCxhwtvTuJud+EXFxyX3g3/gk7LcnuddCmpK+YKF35REucH8b6qIM90Fg2fZ3rt/u3xVBLnz59Kt88nHTTv70Oq4DxFr9OePObPf0vvSUom2y1VDp30vETSF52fX7boZbZXwcfH9uSFMrajflyRckhfmJ5lBcd5BZReg38M0/yL4rwiSUex+bTpY54qLo9XYkVDf1Mlll5vvbj+KI7Z/jh3j+r6bJTs66qHsfQohfRFd5gLp1+z/mU2L4nztVDUqkjjXu3CM5K49GXqucuF0xeyP25LEjfJhdMX624FcV6RLEnivAJIldET1Mdfw4MF6dIWXKpEPS9w4SIlnUq3z9MvT/EsvVIy2Y4+h6C9KNkDFARNo2SyHcohaC9K9gAFQdMomWy3tkOangZvaqLwDbIZaYtvcp1wcuDYdO0jl3ZsYpPZz9+EO6rjpjiD/crEHOUb+kUmkhRvjkpNPr4oG5M4P1teaq4pMuX4sqV53lonXUpqwfMW3KJZ/NJb5I0HqbnIN/y9Gauu6dWo7YMsBTPJJnSFWlOOr+XUJj++ThiqH8/+PKrenJH2HXjpS80zW+uE0zxTfH9EmucGF16exM1z4XQOOD9TRPrE+DpM8rz7yt6TpaRCOs2bo+ZRnz2Sbd8fkZrs/JLc3jRWZyK9ksl2tByC9qJkX1dB0DRKJtuhHIL2omQeHUHQNEom2y1VDuME+1VclotcX4rsM4cWxL0i2fZNR+cqvWMnLPk9bNwGU8bBQXtCl3fddjagWclKCq93tpaHk9ahdx9NPX18UVKPJP+xUGSuSausaBYWb0VLz+etdve5sDo76ZyY+YnvfOYZ9k2G8i8tKIs3XaXX4NOmLrdp675CXU/6kn1d9eBXYS1y9SyKK3ocU/NQkQnIexrNTOL8durl9C4XTj19vPdQav7ao046qDYrzaM+6YSjBf52O9xDma7w7Ze8+b8Fp0tXnX7s0Z7wgY9Wx3UtdxvzkgNfVCcMtXVfoc54iJLJ9qhqOazbBN++Cr51FWzbDp2CnZY91qcfAKcdANOL3JhHKF1TpjDloIOYtP/+2HOZdGrMGLqXLkX33os2pr0Ww0jJHqAgaBolk+1RoxweWgVHngHrt8DW5AZsBr50D3znQbjxWBjIep7tyvi992bWMcew6YEHWHXZZezcnHWqdU6axNwDDqD7xBPpuOEG9FhJ1goqWaddEDSNksn2qFgJbt0m+KszYPWGWsVQYetOWP0sHPkrWFci7T2UdE+fzqxjjmHNb37D+ttu26UYAHZu2ULHokV0XHMN3Ucfjc1IPXCGicrXVW+/IGhnSibbg2o5SFpOZtLeCezoc6WiccA+ebjIhzLtV/BedKmx2w+fTvsc9EEAvn3W7WzYeg9mWS0fcMABfPWrX+Xggw/m1ltv5VOf+hTLly/HgPUG586Az705y2LscUmezuNtv99XR+3n7J8PF0yglXrYeTfX9Pvc90+lDnBFbrXb66QDeDj/n3nwwaxbvJjVq3tGb/r+gsUAa9Yw4447mHjIIay+7rpdcUXTbqT4W5Zeu++b8ddQVzBb1PTut2wzhh4bc9FjlcZtrhOGajfNa6qjnj6zJ5za1r09fe4Hk8ivuPC8JM7fgbRvpGiUsCe1s//RhW9N4ny/QtKnssPN5dQ1sTrOC1/aNfEzF06XJzrEhc9K4vZ04fQ9cqzrg6i5tb6fIb32em7KdWZJG4FmpWPMLO0tKw07dnTzrW8tYWveZHje857HzTffzOTJk+no6GDPPffkqKOOYp999mHz5s1s3QrfvB4+cyx0juB2Vcf48UyYO5e1f/xjn2mf/vOf2WP+fNZOmMDOZ+sM/W8VrX2ASi3bwQijZMphBL/+MpYseZpt23o+49/znvcwduxYOjqyS+/q6mLcuHG89a1v3ZVm+w64N/WCGGGMnT6d7U89xc7tffvOdT/3HM88+STjymBaqrj79fZrAEkLJD0oaamkM+qkeSeZz9xNkn7UjGIHQZ8MQrb7kmtJH5F0j6TFkm6SlA4ZrmGwLQcDfiPJgO+Z2Xm9FOpDwIcA5k6kx2SUNgf3c+HUdFRUOd4vU6mj5G5s3Liezs4e17Fp06YxZky1o2lnZye7796TUcc42Hg4cATV83hB8dSkjqmJR1/RLKmzC+K8q+cDSdyTdcIp6XEA1tHBpO5a25efGs3PLarubqZ2dOyaYi01I3kPwqJZblOzWb1J+VIny10M4utKUidwLvB6Mp/L2yRdYWb3uTT7A58GHiebp/ogSR/qU7bnzqXYVlqhaAK9FD/BXTJpnZfDROwnOQvQFktNVb9w4dR+8kIXLhpenDamGp0lNY3zLrc/qY5a5Uw565+hLt+qH1XD91z4w0mcr4pjk7iuI91G6q7qn5J08sB6k/LVeaENULYbkWvgR2b23Tz9CcA3gAVF+Q625fBqMzuUrDo/KunINIGZnWdm881s/qxGnp0mM2XKOHbu7FnR4LLLLmN7L1/LV17ZM+y+eydMqeeAP0LYvmkT46dNAxXNQZ8jMW76dLo3Fc1X2yIqHh29/frmcGCpmS0zs+3AJcCJSZoPkj1o/y2X7dfTiGzPKhq4EwQNMHDZ7lOuzcz7o0+idpmXGgalHMxsZf6/Bvh5XshScdBBMxg3rmcBksWLF/OJT3yCzZs3s3nzZjZs2MDChQtZvnz5rjTjxsFLiqaSGQFs37CB7Zs2MXXu3D7TTpozhx1btrDz6adbULI+KPbomClpkft9KDl6L6obLyuoXXzhv+S/SyXdQtbWLaVsByOMgct2I3KNpI9KepjMK+H0voozYLOSpElAh5ltysNvoNYHoJpu6g/r9a3mdOK9egMNoXqI74p11XGTz6ELOP0t8KWLYWveYDjvvPO46KKLmD17NitWrOC553racuPHwOkLoLMyD1j6sezN7umqRM5aNSO5zhkFk/kVrRHhSe+293lIZ8r3nk2pnqu0mzrvuYd9X/EKNj7xBLatdjKwA4HusWNZd/jhTLrzzirLX5HXUX8WVqrn5ZSOMN9FcdN7bd9eRX3SRVZlx5Fd5h/IqvcLg8y3DkXj3L0J45PVUXM/0BNeWN0k37LQexqlXkebC+K2FsT5O/7CJM4/oOnEe94um5pkPMkaGHPd+SbfXR3nn8n0FefN1RuSOG9KOj7xgOK1LrxnEuevPbWHFy2sdAi9k651mTPEsm1m5wLnSno38E/A+4vSD6blsAdZh91dwJ+AX5rZrweR35Bx2tth6m7VFpRt27bxyCOPVCkGCaZOhI++eRgKOQzsfOQRti9fzuTjj6drj3S2Sdj+vOex7vjjGfvYY4x/+OFechgGBucLvpLq7pG9qdWrK8im07wBuJzszXB7WWU7GEEMXLYbkWvPJcBf95XpgFsOZraM2m/nUjJ9d7jx/8CRfwfrN/e0IDzjx2SK4cbPw/QR3t/gefZPf6J7wwYmHX009txz7MjHPHTtsQcbxoxh0l13MeGBBwpXx20pg3P3uw3YX9I+ZA/PScC7kzSXAyeb2cGSZgJ3Ap8b8BmDoFEGLtt9yrWk/c3soXzzzcBD9EFrp8/wKymm0/V4d5vUpcXbXVJ7Q1Flusvffx0s2T3rafzm+sy00kFm6RonOH0GfHQWTP8B1e5DXh+n5UztPL4s6UA+12Lfa1l11Hjn7JFeuj9dOh9hUTHrmmWoLuYYgAcfxB58kHWzZ7Nj2jQAJi9fzn9ZubJKKRRN9eZb+um507J5vMewz7POjPeDmrnSzHZIOo1sRFkncIGZLZF0FrDIzK7I494g6T6yrsB/MLN0MeJBkD5yRV5BRXivp/RuFK0DkZpMBkLRZH5pnD9/Ong8BdxKAAAXOUlEQVTOezkdlsS57WnJJIDTXJ3VdJl5s09at751nJbTm9vS+vRLfKZ51pj2Hd5P0OdZx/tqgLLdoFyfJul1ZI//0/RhUoJRNLcSwPRO+Nx0+Mw0uLcbNnbDlA54ye7ZJHyjGQEzVq1i8qpVVftKScHo874ws6uBq5N9n3dhIzPwJ0b+IGgBA5TtBuT6Y/3Nc1QphwqdgoN9H15p34JBDd2Uas77IGgaJZPt1iqHbfRM7JPi7Seph5D3SCqYmOgP/fAC8t0KqblmP+9gkY6r8xndl8T5TFNzl49LXHS8A9SMZGT2dndNiTWqqpoKrFg1jWRfhWn3ir8N6bCUoltU5M/h80kH6/ltX7V1nbBLNsVAY3gTUPrI+QFlaY17z59kbqWqOYuK1hFIPWj8HEnpwzTQtSZ8XJqnP39qyvFdlun6EV6KEk+mqvpMDZCTXDgti6/r9Hq86SiVYF/udACgv2ep2cxfk79HdQYulEy2R2XLIWhjSvYABUHTKJlsh3II2ouSPUBB0DRKJtutVQ4bgWuz4PakNVg0C2/VvERJqy617Hh8gy81yRQt27nKmXJmJ+fbLxlnV4U3QaUtWn+S1ArgzUyJnWesE5YXp25AzgS1MR3w49grHc3iy5nY2/YqsCvNKIjz509NR77uUzOWP70379WdaaVk6+z2sJ0e75t0DiEv0VuSuKJ5iVJTksebgNK5qb0HTWoG8R40RSanFC/QRfPgFA2eS4/z5qF5SZyvs3RgnTeUFg1YS8vizUPpq2/vgjh//tRxbbELp2OFfH36uq4zl2PJZDtaDkH7MQhvpSAoNSWS7T5HSEu6QNIaSfe6fdMl/VbSQ/n/tKEtZhDkNHG1rJDtoFS04UpwFwLfBi52+84ArjOzL+dzh58B/GNfGW02+ENuTko9aFJfhXoUzT1UVIepRcabPorGmacNb29yqjGRuBb8+KQ1P8O3WlMb10BvvnP2qJlF1rfgU7uZr8T0OG/iSqYdr6qoxHY0xZ1jSnJ9+7mb/VRiTvTGAz9Yrs5aWc1uel9Ik2Q7u5LKdNipdF/RYHGK5h4qsBvWTEbmp44uWszpXcm2N4OknkXeVJW+NvxTkl573cnX+2DPOuFmkZq4igYjFnkr+XuWPjDehOjrr84Q1ZKZlfpsOZjZjVSb/SGbDvaiPHwRDczTEQRNoYlfVyHbQalow5ZDb+xhZo/n4Seo7YkJgqFh6D06QraD4WGkeSuZmeUrwfWKXy0rnrJg0HTTsgeoP7I9d250TQSDpIWy3QgDVQ6rJT3fzB6X9HxgTb2E+fKK5wHsKdlV+f7Uzj/FhYvM5+nEdEV9EN76mZryvE07tRT686dLSa+qkw6qXTHTcm11JykaeVw0kntsOo1+0ZBlP/g0XS3WX3w6AWJaGR5vNk0vwt+YdMi564MompTPd1XUnXgPGl31baAMSLbnHyZjx2lZxH8mCee5cFo3XW5dgR03JnEvLSjm+jphqLKfP/podZQ/f9etyXF+O51Qzk+Mt3cSVzQC3I88Tj8PvZ0/zdM/vWmefruoTyM9bqBLURaNAC8a4e7T+l7VgjU8hla2+8VA13O4gp5Z/d5P9cK0QTB0DL1dNmQ7GB7arc9B0o+Bo8mWqVtBtiLWl8mWUTyVbEKRdw5lIYNgF0306AjZDkpFybyV+lQOZnZynajX1tlflx3Ujp7tjdRC4usrdXEsys/nk5qAfJ5FrqxFXqBFaxqk5qhZdcJQbB3y5R6ztDpuP+9hl2bqC5BmWjQc3X+lpBdYNLHgk3XCCVOStupTzjXYe9GOq5dBEzvtminbbKV4uH6FVDAmu7n9UyHdkSyPWS+f1FS1yZmS0sHTntckZqy5funMVDD8U5KanLw757wkbnlBnDe7pE+ht4umI52L1qvwFJmc0riifDbXCaek5fQmJ19HdcxbI61DOghaSskeoCBoGiWT7VAOQXtRsgcoCJpGyWS7pcqhg54GVdqwKjLteHNDaiHxlo80z4110kHtIGWP95tInXn89pQkrmDJhqrpuVJ8Iz29Pu/dk1odprpW6+Rk4ObW+3vCUxIbjR+lnPqrFK3n4MuSOkD5uNSfw5c7tbz4fMY6M5lSq0YFo1QeHbvopOfC0wooMu2c6MKpyaloxcvlddIBXFpwvjfUyQNguTNxzUtMWlVeTscnB15QcEK/FkP6lPuLSj2ZitZl8E9zOpLbu9ulExd6j6GiCQLT9SN82klJnD/uriTOm8aKJv3LKZlsR8shaC9K9nUVBE2jZLI9UFfWIBgeBunuJ2mBpAclLc3nTqqX7m2STNL8wRc6CBpgELLdl1xL+qSk+yTdLek6SUXzswMtbjmMo8fckpp1vBkmHQDlTR2pt9KmOmGo9kjy05Z1jB3LbrNn0zF2LN3btjFh5UrY0eO94M+fmnI8qUeNP1/Rkp6pics3hFOnoyKTWtG1e7YmFeqtF37sWjfwZzI/ji6y5Uv914Ov+9Ss5LeL3qaHpFaAdXXC9aYuHoS7n6RO4Fzg9WTVfpukK8zsviTdZOBj1Frd6jN2AszdPws/mphkvOkovVH3uHBqPflLnTBULyuQeLFV8Ypk2z8IRa+HVPCrXP+urI7zAlUzHs95TlV5Q0F1xaSjL1cXxHlS76HreoJ3P1Mdda0Lp8v/+rV6jz83iXyPC6eTFXpSJ7d6AxULlgkdgGw3KNd3AvPN7BlJ/wP4CsUXM7rMSp0TJzLzsMOYvO++PLt6NTu3bqVr4kQmHHUU25cu5dnbb8e2FY7NHZFsI+sLuJ9MMYhMTjuBffJf3VlSW83gmt6HA0vNbBmApEvI3lBpV8gXgbOBfxjwmYKgvwxctvuUazO73qW/BTilr0xHjXIYM3kyc447jk3LlvHIpZey89lnd8XtMWkS41/2MqaceCIbr7wSc3EjnQ3Ar8g+WNLvmZ3AQ2T9lq+i9mNrWCjutJspaZHbPi+f4qLCXlQ3llaQfFtLOhSYY2a/lBTKIWgdA5ftPuU64VSyx76QlioH0eMBk5olUq8gjzcrFTUw0zx8G2DeG9/IurvvZv2SJaSs37IFbrqJqYcdxoTXvpZnrrpqV1y6KKD3LEpn2C8arOfjitom/fGqKqozf/7UklHxGdlO1ggv+ljpJivvH4CPAxPy/en981aIdA7sKpNa4lXllzD1A+LqDl8q/rpaa2YD7iOQ1AF8A1jY/6Odu9LcI5O45T3BdH6+yc7sclNB9g8l20XL1RYdt78L35HEvcaF00nMijynfFzRshOzEzNPV8HMJE8/Uz+uaPIz7xmW1Oek83vCWz6bHLfQm7zek0T6pz59A3mfvlRq/ToUawvS5QyhbFeQdAqZ5feovtIOdCW4MyWtlLQ4/71pcEUeWibNmYPt3NmrYvCsv+MOOnfbjc5ZRdP5jRweoVpMxwET81/an7IDuK1F5SpkcB3SK6me6+9jwEIn25PJm+iStgNHAtdEp3TQEgYu26lc700vowMkvQ74LHCCmfVpP2/EW+lCYEEv+88xs0Py39UN5DNs7P7iF7P+vgbmNjBj0/33M+7F6fpvI49uslZJZT7qsWTfvsp/nVQrCCPrnR32JW4HpxxuA/aXtI+ksWTfwAt3ZW22gayj7gwzGwvcCLzRzBb1llkQNJWBy3Yq1yeRLD8o6WXA98gUQ92Zhj2NzK10o6R5jWTWFxPpGRaSTr/jZx5JW8zeRJIOPPP5pF+7FdU4Yffd6XryybqeRz6P7U8+yeQ5PUp4RkHauvP/UOt15BufRcel1+dNR0Wdwml93unCqWlsNpmpx7/ou8iUQoWKgvBYXoa51F3oEHqJK/L48qYkf5xqUrpCDNBbycx2SDqNbHRUJ9norUXA8ySdYGaNrufZC9PomaMvdS06wYWTBXGnOYeo4xO3o0edaSVdCdSbb9I4T5FaOzTZ9mO4ivJMbYp+2vGaQWmeecn2chdObFXTXF08mpiYvu7C6Wep72Z9dXXUlq8WFK3Kc6poydB0aGjR9dabzruOdA9QtnuTazNbIuksYFEu118lG833U0kAj5rZCXUzZXB9DqdJeh+Z+P29mT3dW6JSLPbT3Q2q+7qpRsrSj3AqXkn9QUAZuup3DuL25K3cXa+U/MNnTaIYvGw/XC+vWOwnaDYDle1UrvN9n3fh1/U3z4EOgvsOsB9wCPA41bq8CjM7z8zmm9n8In08lOxct46O2enUlb0zfvZsdqxrtLevfemix6QEWcvVb/fWN2b0dEgPFxWHjt5+TWJAsj1rVjodQxD0jxbIdr8YkHIws9VmttPMuoF/J+vEKy3b7ruPMQce2GfrQZ2dTH7Ri9h2//2F6UYCk6i++RXTZjc9qxWmyqGL2vW6Ws1Qr4fSbrIdjBxKttbPwMxKlWUU8823APcWpa8whtqp5yt4F87URu3t93OoT2rrfiD/tzVreHTTJnY74gh0880oyXM/wCQ2HHkkrFrFXht6DLqpa2lqbvV4q2J6DUVLIRThryn12ku9DT3eZFxv1PWzwJ9ceYoEcQzwVnqUQ9E1pHFFLUZfv94jsp4r61BPPzNQ2c7aVPUcGfxVpmshHOTCiWv6XB9Oa/EnPcF0KVA/Ejn1qvXsSGz5Ly1altSfP70G/8lQb8bE3vBSel11VDq62eOXy/3nJO5YF+76YBLpy13U0itasyF9I6QT8Xm8FPuev97bAiWbWmnAK8EdLekQsutZDnx4CMs4aAR0XHst3W96E/aGN9Bx113Y6tW7RgJvnz2bLYccAsC0a9KZHEcuh5K9+TZSbVJKEdmjVNh71SKa+QCNBNkORg5tpxzqrJZ1fi/7So22b6fjyiuxAw+k++ijWSvRsXUrOydOpGP7dibedx8THngAjYLO6AoTgDPz3zP0LphjyBTDN6j1pBoOmrmS4kiR7WBkULJVQls/8d5+uaF7VvIOnlJnpCxUm1bSF5gfQZy6c/6VC28F2LkT7rkHu+cemDqV58aOZdy2bUzZsKHKc6doxUtvOkobmH6SvKJhdOmo56Lr8+dI8/QmuqLlRfsyxZ1P5hR9eX7+DrJ+h7FkM3O9g8wA4K8vNR7486fX581fqSOgvyZf5notmbJ9XfUwlp6Z7FIHaG/CSIaIV7lQphLl3V6XJ3H/syc4Nz2uyL3S5dOVuNVWlTM1rfg1Dop6ntKVS4ry9NvJOMOXepNT4hr8Uj9j4GEFZUlNR+ML4rwz/ZYkzt+z25M4P7A2NTHNc2FvlhshZqWRiICp6/tjGx3ZTCFzDz+ZzD1nC5mYH0DtWIfhxijBQLwgGALKJtujUjkEvdNJdV9f2RQDlK/pHQTNomyy3VLlsAW4LVeNNTN8OpU5I3Gw3eji0u99b4pI8/SNyL0KnHYXF5ix0qkNfQO+yORUZOZJlxAt8jryadPzLauTDqrNNUUjPIqaselx/vzp9fmFD9I8ZxXE+br2dTtc3koDZzPwxzxcZHZJTT7etJKaM7wpIhnuWzXOfk/qk5pBvDklnc7f34F0gjl/XM2iDS58SBJXtNiEN1Wlo8q9Y8gbkzhvViqa6qbI6yhdzMJ7E6Wmvx+6cDqzoDdHpfVSz6TWuwoom2xHyyFoK8r2AAVBsyibbIdyCNqKsj1AQdAsyibbLVUOD8Daw7P240xq2249DEWvTO95FpejtURZqul1Ecuy2WUr3H778rXSwi0Mf71VKMM9rDDIstzdd5LGaXK93DiQg9pCtluqHMxsFoCkRc1YuGKwlKUcEGVplLJ5dFQws1llqrcoS++UqSwpZZPtMCsFbUXZvq6CoFmUTbZDOQRtRdnsskHQLMom28OlHM7rO0lLKEs5IMrSEGV7gBLKVG9Rlt4pU1mqKJtsy6xoyrUgKBf7SXZ2nbh3wO1ltScHQV+UTbbDrBS0FWWzywZBsyibbIdyCNqOMnl0BEEzKZNsD3SZ0AEhaYGkByUtlXRGi899gaQ1ku51+6ZL+q2kh/L/liwELGmOpOsl3SdpiaSPDUd5JI2X9CdJd+Xl+Od8/z6Sbs3v008kjR3KcvQHv0rdQFbL6ksGJX0yvy93S7pOUq8+6f3Ndygpi2yXRa7zc44q2W5Aro+UdIekHZLe3kh5WqYcJHUC55Kt1XQgcLKkooXVms2FwIJk3xnAdWa2P9lSVK16qHcAf29mBwJHAB/N66LV5dkGvMbMDiabFGeBpCOAs4FzzOyFwNPAqUNcjoapNL17+/VFgzJ4JzDfzF4K/Az4SpPyHUoupByyXRa5hlEk2w3K36PAQuBHjZanlS2Hw4GlZrbMzLYDl1A9mf2QYmY3AuuS3ScCF+Xhi4C/blFZHjezO/LwJuB+sjUMW1oey6jMCDYm/xnwGrIXY0vK0R8Guc5unzJoZtebWWWNyltobNnskG3KI9f5+UeTbDci18vN7G76YblqpXLYi+oJSFdQuxhtq9nDrRf8BLBHqwsgaR7wMrKJTVteHkmdkhYDa4DfAg8D682sMjFqGe7TLvp4gGZKWuR+H0oO768Mngr8qoFihWwnDLdc52UYLbI9JPIXHdI5ZmaSWurXK2k34P8BHzezjVLPenStKo+Z7QQOkTQV+DnFcyAPO334gq9tlrufpFPIlic7qhn5DSetlu0yyHV+rpDtQdDKlsNKqles3DvfN5yslvR8gPx/TatOLGkM2QP0QzO7bLjLY2brgeuBVwJTJVU+HMpwn6rYWefXAA3JoKTXAZ8FTjCzbc3Kt8UMiyyVTa5hVMj2kMhfK5XDbcD+ubfAWOAksqWLh5MrgPfn4fcDv2jFSZV9Sp0P3G9m3xiu8kialX9VIWkC8HoyO/H1QMWjoWX10giD7HPoUwYlvQz4HpliaPQlFrJNeeQ6L8toku0hkb+WmZXMbIek08iWeOoELjCzJX0c1jQk/Rg4msx2twL4AvBl4FJJp5JNJf7OFhXnVcB7gXtymyjAZ4ahPM8HLsq9HTqAS83sKkn3AZdI+l9k3jvnD3E5GqabgQ8UqieDks4CFpnZFcBXyZbw+mluDnnUzE4YSL4DLGa/KZFsl0WuYRTJdiNyLenlZKa1acDxkv7ZzA4qyjemzwjaij0le3+duK/E9BlBG1M22Y4O6aCtKNvkZEHQLMom26Ecgrajwc7nIGg7yiTboRyCtqJsX1dB0CzKJtuhHIK2omwPUBA0i7LJdiiHoK0o2wMUBM2ibLIdyiFoK8o2530QNIuyyXYoh6CtKNvXVRA0i7LJdiiHoK0wyuXREQTNomyyHcohaCvK9nUVBM2ibLIdyiFoK8r2AAVBsyibbIdyCNqKsj1AQdAsyibboRyCtqJsHh1B0CzKJtuhHIK2omxfV0HQLMom26EcgrbC6MciuEHQRpRNtkM5BG1F2ZreQdAsyibboRyCtqJsTe8gaBZlk+1QDkFbUbYHKAiaRdlkO5RD0FaU7QEKgmZRNtkO5RC0FWWzywZBsyibbHcMdwGCoD9UPDp6+zWCpAWSHpS0VNIZvcSPk/STPP5WSfOaVPQgKGQwsj0Uch3KIWgrKl9Xvf36QlIncC5wLHAgcLKkA5NkpwJPm9kLgXOAs5tU9CAoZKCyPVRyHcohaCsqdtnefg1wOLDUzJaZ2XbgEuDEJM2JwEV5+GfAayVp0AUPgj4YhGwPiVxHn0PQVnTDNZtgZp3o8ZIWue3zzOw8t70X8JjbXgG8IsljVxoz2yFpAzADWDu4kgdBMYOQ7SGR61AOQVthZguGuwxBMBSUTbbDrBSMJlYCc9z23vm+XtNI6gJ2B55qSemCYGAMiVyHcghGE7cB+0vaR9JY4CTgiiTNFcD78/Dbgd+ZmbWwjEHQX4ZErsOsFIwaclvracA1QCdwgZktkXQWsMjMrgDOB74vaSmwjuxBC4LSMlRyrfgoCoIgCFLCrBQEQRDUEMohCIIgqCGUQxAEQVBDKIcgCIKghlAOQRAEQQ2hHIIgCIIaQjkEQRAENfx/pVvAJGjlUWAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "O.plot_reals()\n",
    "O.plot_etype()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [
    "y8bVpm11gCLw"
   ],
   "name": "mpslib_in_google_colab.ipynb",
   "provenance": [],
   "version": "0.3.2"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
